A. Technical Field
The present invention relates generally to the encoding of data for transmission along a communications link, and more particularly, to the selection of modes by which data is encoded prior to transmission.
B. Background of the Invention
The burden of high bandwidth applications, such as voice and video, on networks is continually increasing. To facilitate these bandwidth-hungry applications, compression technology and standards are evolving to allow data from these applications to be more effectively communicated across a network to a client. Two such standards are H.264 and MPEG-4 which relate to the encoding and decoding of video signals. Although these standards generally improve the method in which data is encoded, they may also place a significant strain on the processing resources of the encoder itself. Because of the time-sensitive nature of transmitting and receiving video data, an encoder has a limited amount of time to select an appropriate encoding method for a video frame, encode the video frame, and transmit the frame onto a network. The quality of the video signal may be jeopardized if the encoder is unable to complete all of the necessary encoding computations, within the requisite time, that may be needed to encode and transmit the video signal.
FIG. 1 illustrates a typical communications link 120 on which an encoded video signal may be communicated. As illustrated, a video camera 110 generates a video signal that is sent to an encoder 115. This encoder 115 may be software located on a computer or server that is connected to the communications link 120. The encoder 115 receives a video frame that is typically divided into macroblocks for encoding purposes. Depending on the content in these macroblocks, they may be further partitioned into smaller blocks to allow more precision in the encoding process.
Each of these macroblocks, and sub-blocks within a macroblock, may be encoded relative to another block located within the same video frame or relative to a block in a previous or future reference frame within the video signal. There are typically two types of modes, intra and inter-mode, in which a macroblock may be encoded. Intra-mode encoding means that encoding occurs relative to blocks within the same video frame. Inter-mode encoding means that encoding occurs relative to one or more reference frames outside the current video frame. After a macroblock is encoded, it is transmitted, via the communications link 120, to a receive-side decoder 125. The decoder 125 reconstructs the macroblock within the video signal so that it may be shown on the display device 130.
As mentioned above, when inter-mode encoding is performed, a macroblock (e.g., a 16×16 block within a video frame) is encoded relative to a macroblock in another reference frame. The distortion between macroblocks is calculated by taking the difference between the current macroblock and the reference macroblock in the reference frame. The encoder may select from a number of different inter-modes to encode a particular macroblock. The chosen mode is the one that minimizes some criteria such as the joint rate-distortion function. Using the rate-distortion criteria, if there is very little distortion between macroblocks, the macroblock may be encoded as SKIP mode. Comparatively, if a relatively large amount of distortion exists, then other modes are searched in order to reduce the rate-distortion criteria.
The selection of an encoding inter-mode for a macroblock typically requires significant computations. These computations require time, processor bandwidth and memory resources to be completed. This delay and demand on system resources may adversely affect the performance of the encoding process and the display of the video signal at the receiver side of a connection.